Fenwick tree(也常叫 Binary Indexed Tree, BIT)是一种用于高效维护数组“前缀和/累计频率”的数据结构,支持在 O(log n) 时间内进行单点更新与前缀查询(以及由此扩展的区间查询)。
/ˈfɛn.wɪk triː/
Use a Fenwick tree to query prefix sums quickly.
使用 Fenwick 树可以快速查询前缀和。
In competitive programming, a Fenwick tree is often used to handle dynamic frequency counts with many updates and queries.
在算法竞赛中,Fenwick 树常用于处理需要频繁更新与查询的动态频率统计。
“Fenwick tree”得名于计算机科学家 Peter M. Fenwick,他在 1994 年发表论文介绍了这种用于“累计频率表(cumulative frequency tables)”的高效结构;由于其实现常用“二进制低位”来跳转索引,因此也被称为 Binary Indexed Tree(二进制索引树)。